#include "widget.h"
#include "ui_widget.h"
#include "mylabel.h"
#include "zhuce.h"
#include "ui_zhuce.h"
#include "serverwidget.h"
#include "ui_serverwidget.h"
#include "endwidget.h"
#include "ui_endwidget.h"

#include <QDialog>
#include <QDebug>
#include <QMessageBox>
#include <QMovie>
#include <QStringList>
#include <QString>
#include <QCompleter>
#include <QHBoxLayout>
#include <QIcon>
#include <QMouseEvent>
#include <QPushButton>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QPainter>
#include <QTime>
#include <QSqlError>


zhuce* window1;
ServerWidget* window2;
EndWidget* window3;


int final_winner = 1 ;
int score[10] ;
int participants ;
QString receive_text ;


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    setWindowTitle("时态抢答交互系统");//设置窗口标题
    setWindowIcon(QIcon("C:\\Users\\22509\\Pictures\\logo.jpg"));


    QSqlDatabase db =QSqlDatabase::addDatabase("QSQLITE");
//    //数据库名称
//    db.setDatabaseName("question.db");
//    //打开数据库
//    if(!db.open())
//    {
//        QMessageBox::information(this,"数据库打开失败","数据库打开失败");
//    }
//    else {
//        QMessageBox::information(this,"数据库打开成功","数据库打开成功");
//    }
//        QSqlQuery query;
//        //创建表
//        query.exec("create table question(id INTEGER PRIMARY KEY AUTOINCREMENT, subject varchar(255),content varchar(255), choice varchar(255), answer varchar(255));");
//        if (query.exec("create table question(id INTEGER PRIMARY KEY AUTOINCREMENT,subject varchar(255),content varchar(255),choice carchar(255),answer varchar(255));")) {
//                   qDebug() << "Failed to create table: " << query.lastError().text();
//               }
//               else {
//                   qDebug() << "Create table successful!";
//               }

//  //插入数据
//        //第一题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                           "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id", 1);
//                              query.bindValue(":subject", "数电");
//                              query.bindValue(":content", "在二进制系统中,有多少个不同的位模式可以表示一个3位数");
//                              query.bindValue(":choice", " A.4  B.6  C.8  D.16");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第二题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id", 2);
//                              query.bindValue(":subject", "数电");
//                              query.bindValue(":content", "在二进制加法中,什么是溢出");
//                              query.bindValue(":choice", " A.结果是负数  B.结果大于输入位的最大值  C.结果等于0  D.结果小于输入位的最小值");
//                              query.bindValue(":answer", "B");
//                              query.exec();
//                    //第三题

//                        query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                         "VALUES (:id, :subject, :content, :choice, :answer)");
//                                  query.bindValue(":id", 3);
//                                  query.bindValue(":subject", "数电");
//                                  query.bindValue(":content", "半加器和的输出端与输入端的逻辑关系是");
//                                  query.bindValue(":choice", " A.与非  B.或非  C.与或非  D.异或");
//                                  query.bindValue(":answer", "D");
//                                  query.exec();

//                    //第四题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id", 4);
//                              query.bindValue(":subject", "数电");
//                              query.bindValue(":content", "在数字电路中,什么是纹波");
//                              query.bindValue(":choice", " A.一种逻辑门  B.电路的不稳定性  C.电路的输出延迟  D.电路的噪声");
//                              query.bindValue(":answer", "B");
//                              query.exec();
//                    //第五题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id", 5);
//                              query.bindValue(":subject", "数电");
//                              query.bindValue(":content", "在数字电路中,什么是 均衡二进制树");
//                              query.bindValue(":choice", " A.一种逻辑门  B.一种电路布线方法  C.一种状态机  D.一种数字信号处理算法");
//                              query.bindValue(":answer", "B");
//                              query.exec();
//                    //第六题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id", 6);
//                              query.bindValue(":subject", "模电");
//                              query.bindValue(":content", "什么是交流电在模拟电路中的特点");
//                              query.bindValue(":choice", " A.方向固定  B.电流和电压都是常数  C.方向和大小都变化  D.电流和电压都是正弦波形");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第七题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id", 7);
//                              query.bindValue(":subject", "模电");
//                              query.bindValue(":content", "什么是戴维南电路");
//                              query.bindValue(":choice", " A.一种电感元件  B.一种电容器元件  C.一种电路分析方法  D.一种振荡电路");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第八题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id", 8);
//                              query.bindValue(":subject", "模电");
//                              query.bindValue(":content", "在模拟电路中,什么是带宽的定义");
//                              query.bindValue(":choice", " A.电压范围  B.电流大小  C.信号的频率范围  D.电阻值");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第九题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id", 9);
//                              query.bindValue(":subject", "模电");
//                              query.bindValue(":content", "在模拟电路中,什么是脉冲宽度调制的主要用途");
//                              query.bindValue(":choice", " A.控制电路的开关  B.提供稳定的电源电压  C.控制电路的输入电流  D.控制电路的输出电流");
//                              query.bindValue(":answer", "A");
//                              query.exec();
//                    //第十题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",10);
//                              query.bindValue(":subject", "模电");
//                              query.bindValue(":content", "在模拟电路中,什么是负反馈的作用");
//                              query.bindValue(":choice", " A.放大信号  B.减小电流  C.控制电路的稳定性和增益  D.调整频率");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第十一题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",11);
//                              query.bindValue(":subject", "信号与系统");
//                              query.bindValue(":content", "在信号与系统中,什么是傅里叶变换的作用");
//                              query.bindValue(":choice", " A.将信号平移  B.将信号进行时域卷积运算  C.将信号从时域转换到频率域  D.将信号加倍");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第十二题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",12);
//                              query.bindValue(":subject", "信号与系统");
//                              query.bindValue(":content", "什么是信号在信号与系统中的定义");
//                              query.bindValue(":choice", " A.信息传递的方式  B.时间序列  C.电流值  D.电压值");
//                              query.bindValue(":answer", "B");
//                              query.exec();
//                    //第十三题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",13);
//                              query.bindValue(":subject", "信号与系统");
//                              query.bindValue(":content", "在信号与系统中,什么是能量信号");
//                              query.bindValue(":choice", " A.信号的振幅无限大  B.信号的频率无限高  C.信号的能量有限  D.信号的幅度恒定");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第十四题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",14);
//                              query.bindValue(":subject", "信号与系统");
//                              query.bindValue(":content", "在信号与系统中,什么是拉普拉斯变换的主要应用领域");
//                              query.bindValue(":choice", " A.时域分析  B.频域分析  C.信号的时间延迟  D.系统的阶数确定");
//                              query.bindValue(":answer", "A");
//                              query.exec();
//                    //第十五题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",15);
//                              query.bindValue(":subject", "信号与系统");
//                              query.bindValue(":content", "在信号与系统中,什么是帕斯维尔定理");
//                              query.bindValue(":choice", " A.信号的时域分析方法  B.系统的单位冲激响应  C.系统对冲激信号的响应  D.信号的频域分析的基本定理");
//                              query.bindValue(":answer", "D");
//                              query.exec();
//                    //第十六题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",16);
//                              query.bindValue(":subject", "自动控制原理");
//                              query.bindValue(":content", "在自动控制系统中,反馈的作用是什么");
//                              query.bindValue(":choice", " A.降低系统复杂度  B.提高系统响应速度  C.调整系统的初始状态  D.控制系统的输出并维持在期望值附近");
//                              query.bindValue(":answer", "D");
//                              query.exec();
//                    //第十七题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",17);
//                              query.bindValue(":subject", "自动控制原理");
//                              query.bindValue(":content", "在自动控制系统中,什么是稳态响应");
//                              query.bindValue(":choice", " A.系统的瞬态响应  B.系统的频率响应  C.系统的长期行为  D.系统的非线性响应");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第十八题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",18);
//                              query.bindValue(":subject", "自动控制原理");
//                              query.bindValue(":content", "在自动控制系统中,什么是闭环控制系统的主要特点");
//                              query.bindValue(":choice", " A.没有反馈环路  B.有反馈环路  C.控制器的输出不反馈到系统输入  D.控制器的输出反馈到系统输入");
//                              query.bindValue(":answer", "B");
//                              query.exec();
//                    //第十九题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",19);
//                              query.bindValue(":subject", "自动控制原理");
//                              query.bindValue(":content", "什么是微分控制器在自动控制系统中的作用");
//                              query.bindValue(":choice", " A.增加系统稳定性  B.增加系统的瞬态响应  C.增加系统的开环增益  D.增加系统的频率响应");
//                              query.bindValue(":answer", "B");
//                              query.exec();
//                    //第二十题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",20);
//                              query.bindValue(":subject", "自动控制原理");
//                              query.bindValue(":content", "在自动控制系统中,什么是控制周期");
//                              query.bindValue(":choice", " A.控制器的输出周期  B.系统的开环响应周期  C.控制系统的稳态周期  D.控制器的输出周期与系统响应周期之差");
//                              query.bindValue(":answer", "A");
//                              query.exec();
//                    //第二十一题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",21);
//                              query.bindValue(":subject", "EDA");
//                              query.bindValue(":content", "在EDA中,什么是逻辑综合");
//                              query.bindValue(":choice", " A.电子元器件的采购  B.将高级电路描述转换为门级电路描述  C.制定电路设计规范  D.计算电路的传输延迟");
//                              query.bindValue(":answer", "B");
//                              query.exec();
//                    //第二十二题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",22);
//                              query.bindValue(":subject", "EDA");
//                              query.bindValue(":content", "EDA工具中的模拟电路设计是指什么");
//                              query.bindValue(":choice", " A.通过计算机模拟电路行为  B.制造电子设备的过程  C.安排电子元件在电路板上的位置  D.计算电路的功耗");
//                              query.bindValue(":answer", "A");
//                              query.exec();
//                    //第二十三题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",23);
//                              query.bindValue(":subject", "EDA");
//                              query.bindValue(":content", "EDA中的形式验证是指什么");
//                              query.bindValue(":choice", " A.验证电路的形状和布局  B.验证电路的性能和功耗  C.验证电路的逻辑正确性  D.验证电路的物理可行性");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第二十四题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",24);
//                              query.bindValue(":subject", "EDA");
//                              query.bindValue(":content", "EDA中的网表是什么");
//                              query.bindValue(":choice", " A.描述电路的硬件组件  B.描述电路的功耗  C.描述电路的时序特性  D.描述电路的频率响应");
//                              query.bindValue(":answer", "A");
//                              query.exec();
//                    //第二十五题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",25);
//                              query.bindValue(":subject", "EDA");
//                              query.bindValue(":content", "EDA中的封装设计是指什么");
//                              query.bindValue(":choice", " A.制造电子设备的过程  B.设计电路的原始概念  C.安排电子元件在电路板上的位置  D.设计芯片或电子元器件的封装外壳");
//                              query.bindValue(":answer", "D");
//                              query.exec();
//                    //第二十六题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",26);
//                              query.bindValue(":subject", "数据结构");
//                              query.bindValue(":content", "数据结构中的栈是一种什么类型的数据结构");
//                              query.bindValue(":choice", " A.线性结构  B.非线性结构  C.层次结构  D.并发结构");
//                              query.bindValue(":answer", "A");
//                              query.exec();
//                    //第二十七题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",27);
//                              query.bindValue(":subject", "数据结构");
//                              query.bindValue(":content", "在图数据结构中,什么是顶点的度");
//                              query.bindValue(":choice", " A.顶点的大小  B.顶点的位置  C.与顶点相邻的边的数量  D.顶点的颜色");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第二十八题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",28);
//                              query.bindValue(":subject", "数据结构");
//                              query.bindValue(":content", "在数据结构中,什么是散列表（哈希表）");
//                              query.bindValue(":choice", " A.一种用于排序的数据结构  B.一种树型数据结构  C.一种将数据映射到存储位置的数据结构  D.一种用于图的数据结构");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第二十九题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",29);
//                              query.bindValue(":subject", "数据结构");
//                              query.bindValue(":content", "在树型数据结构中,什么是深度优先搜索");
//                              query.bindValue(":choice", " A.从树的根节点开始，按层次遍历树  B.从树的叶子节点开始，按层次遍历树  C.从树的根节点开始，逐层遍历树  D.从树的叶子节点开始，逐层遍历树");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第三十题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",30);
//                              query.bindValue(":subject", "数据结构");
//                              query.bindValue(":content", "在数据结构中,什么是树的直径");
//                              query.bindValue(":choice", " A.树的根节点的值  B.树的节点数目  C.树的最长路径上的节点数  D.树中没有子节点的节点数目");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第三十一题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",31);
//                              query.bindValue(":subject", "嵌入式");
//                              query.bindValue(":content", "在嵌入式系统中,什么是RTOS");
//                              query.bindValue(":choice", " A.实时操作系统  B.随机操作系统  C.通用操作系统  D.实时网络操作系统");
//                              query.bindValue(":answer", "A");
//                              query.exec();
//                    //第三十二题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",32);
//                              query.bindValue(":subject", "嵌入式");
//                              query.bindValue(":content", "在嵌入式系统中,什么是中断");
//                              query.bindValue(":choice", " A.系统崩溃  B.外部事件或条件导致CPU暂时停止当前任务，执行另一个任务  C.非易失性存储器故障  D.网络连接中断");
//                              query.bindValue(":answer", "B");
//                              query.exec();
//                    //第三十三题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",33);
//                              query.bindValue(":subject", "嵌入式");
//                              query.bindValue(":content", "什么是嵌入式系统的实时性要求");
//                              query.bindValue(":choice", " A.系统需要运行在实时操作系统上  B.系统需要具有低延迟和快速响应外部事件的能力  C.系统只能在特定时间段内运行  D.系统只能在特定硬件上运行");
//                              query.bindValue(":answer", "B");
//                              query.exec();
//                    //第三十四题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",34);
//                              query.bindValue(":subject", "嵌入式");
//                              query.bindValue(":content", "在嵌入式系统中,什么是串口通信");
//                              query.bindValue(":choice", " A.一种通信方式，用于在多个CPU之间传输数据  B.一种通信方式，用于在同一CPU内的不同硬件模块之间传输数据  C.一种通信方式，用于通过光纤传输数据  D.一种通信方式，用于通过串行接口传输数据");
//                              query.bindValue(":answer", "D");
//                              query.exec();
//                    //第三十五题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",35);
//                              query.bindValue(":subject", "嵌入式");
//                              query.bindValue(":content", "在嵌入式系统中,什么是PWM");
//                              query.bindValue(":choice", " A.一种传感器  B.一种用于显示图形的设备  C.脉冲宽度调制，用于产生模拟信号  D.用于编程的通信接口");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第三十六题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",36);
//                              query.bindValue(":subject", "DSP");
//                              query.bindValue(":content", "DSP常用于哪些应用领域");
//                              query.bindValue(":choice", " A.图形设计  B.数据库管理  C.无线通信、音频处理、图像处理等  D.电子商务");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第三十七题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",37);
//                              query.bindValue(":subject", "DSP");
//                              query.bindValue(":content", "DSP中的量化是指什么");
//                              query.bindValue(":choice", " A.将信号从频域转换为时域  B.将信号从时域转换为频域  C.将连续信号转换为离散信号  D.将离散信号转换为连续信号");
//                              query.bindValue(":answer", "C");
//                              query.exec();
//                    //第三十八题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",38);
//                              query.bindValue(":subject", "DSP");
//                              query.bindValue(":content", "在DSP中,什么是取样定理");
//                              query.bindValue(":choice", " A.信号的频率越高，需要更高的取样率  B.信号的频率越低，需要更高的取样率  C.信号的频率与取样率无关  D.信号的频率越低，需要更低的取样率");
//                              query.bindValue(":answer", "A");
//                              query.exec();
//                    //第三十九题
//                    query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                     "VALUES (:id, :subject, :content, :choice, :answer)");
//                              query.bindValue(":id",39);
//                              query.bindValue(":subject", "DSP");
//                              query.bindValue(":content", "在DSP中,什么是数字信号处理系统的组成部分之一");
//                              query.bindValue(":choice", " A.模拟信号处理器  B.电源管理单元  C.通信协议  D.模拟滤波器");
//                              query.bindValue(":answer", "A");
//                              query.exec();
//                    //第四十题
//                      query.prepare("INSERT INTO question (id, subject, content, choice, answer) "
//                                                                   "VALUES (:id, :subject, :content, :choice, :answer)");
//                                            query.bindValue(":id",3);
//                                            query.bindValue(":subject", "DSP");
//                                            query.bindValue(":content", "在DSP中,什么是插值");
//                                            query.bindValue(":choice", " A.减少信号的采样率  B.增加信号的采样率  C.改变信号的幅度  D.改变信号的频率");
//                                            query.bindValue(":answer", "B");
//                                            query.exec();



    //label显示动态图片
    QMovie *movie=new QMovie();
    movie->setFileName("C:\\Users\\22509\\Pictures\\blackboard.gif");
    ui->bg->setMovie(movie);
    movie->start();
    ui->bg->setScaledContents(true);//自适应

    //label显示图片
    QPixmap pixmap;
    //加载图片的路径
    pixmap.load("C:\\Users\\22509\\Pictures\\csu1.png");
    ui->xiaohui->setPixmap(pixmap);

    //输入框
    ui->lineEdit->setEchoMode(QLineEdit::Normal);
    ui->lineEdit_2->setEchoMode(QLineEdit::Password);



    //注册窗口的设置
    window1=new zhuce();

    connect(ui->pushButton,&QPushButton::clicked,[=](){
        this->close();
        window1->ui->lineEdit->clear();
        window1->ui->lineEdit_2->clear();
        window1->ui->lineEdit_3->clear();
        window1->show();
    });

    connect(window1->ui->Return,&QPushButton::clicked,[=](){
        window1->close();
        this->ui->lineEdit->clear();
        this->ui->lineEdit_2->clear();
        this->ui->lineEdit_3->clear();
        //数字转换为qstring 4位数
        int i=this->generateRandomNumber();
        QString b=QString("%1").arg(i, 4, 10, QChar('0'));
        ui->yzBtn->setText(b);
        this->show();
    });


    int i=this->generateRandomNumber();
    QString b=QString("%1").arg(i, 4, 10, QChar('0'));
    ui->yzBtn->setText(b);

  connect(ui->yzBtn,&QPushButton::clicked,this,[=](){
      //数字转换为qstring 4位数
        int i=this->generateRandomNumber();
        QString b=QString("%1").arg(i, 4, 10, QChar('0'));
       ui->yzBtn->setText(b);
 });




    //Server窗口
    window2=new ServerWidget();
    connect(window2->ui->ReturnBtn,&QPushButton::clicked,this,[=](){
        window2->close();
        this->ui->lineEdit->clear();
        this->ui->lineEdit_2->clear();
        this->ui->lineEdit_3->clear();
        this->show();
    });




    //结算窗口
    window3=new EndWidget();
    connect(window2->ui->EndBtn_3,&QPushButton::clicked,[=](){
        window2->close();
        window3->ui->textEdit->clear();
        window3->show();

    });

    connect(window3->ui->pushButton_2,&QPushButton::clicked,[=](){
        window2->ui->answer_lb->clear();
        window2->ui->subject_lb->clear();
        window2->ui->label_13->clear();
        window2->ui->label_14->clear();
        window2->ui->label_15->clear();
        window2->ui->label_17->clear();
        window2->ui->label_18->clear();
        window2->ui->textEdit_2->clear();
        window2->ui->textEdit_3->clear();
        window2->ui->ListenBtn->setEnabled(true);
        window2->ui->StartBtn_2->setEnabled(false);
        window2->ui->EndBtn_3->setEnabled(false);
        window2->ui->SendBtn->setEnabled(false);
        window2->ui->NextBtn->setEnabled(false);
        window2->ui->textEdit->clear();
        window3->close();
        window2->show();

    });



    connect(window3->ui->ReturnBtn,&QPushButton::clicked,this,[=](){
        window3->close();
        this->ui->lineEdit->clear();
        this->ui->lineEdit_2->clear();
        this->ui->lineEdit_3->clear();
        //数字转换为qstring 4位数
        int i=this->generateRandomNumber();
        QString b=QString("%1").arg(i, 4, 10, QChar('0'));
        ui->yzBtn->setText(b);
        this->show();
    });
}

Widget::~Widget()
{
    delete ui;
}



// 随机生成数字
int Widget::generateRandomNumber()
{
   QTime randtime;
   randtime = QTime::currentTime();
   qsrand(randtime.msec()+randtime.second()*1000); //以当前时间ms为随机种子

   return qrand() % 10000;    //产生100以内的随机整数
}


void sqlite_Init()
{

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("user.db");
    if(!db.open())
    {
        qDebug()<<"open error";
    }
    //create excle
    QString createsql=QString("create table if not exists user(id integer primary key autoincrement,"
                        "username ntext unique not NULL,"
                        "password ntext not NULL)");
    QSqlQuery query;
    if(!query.exec(createsql)){
        qDebug()<<"table create error";
    }
    else{
        qDebug()<<"table create success";
    }
}





void Widget::on_pushButton_2_clicked()
{
    sqlite_Init();
        QString username = ui->lineEdit->text();
        QString password = ui->lineEdit_2->text();
        QString sql=QString("select * from user where username='%1' and password='%2'")
                .arg(username).arg(password);
        //创建执行语句对象
        QSqlQuery query(sql);
        //判断执行结果
        if(!query.next())
        {
            qDebug()<<"Login error";
            QMessageBox::information(this,"登录认证","登录失败,账户或者密码错误");
        }
        else
        {
            if(ui->lineEdit_3->text()== ui->yzBtn->text())
            {
                qDebug()<<"Login success";
                //登录成功后可以跳转到其他页面
                this->close();
                window2->ui->StartBtn_2->setEnabled(false);
                window2->ui->EndBtn_3->setEnabled(false);
                window2->ui->SendBtn->setEnabled(false);
                window2->ui->NextBtn->setEnabled(false);
                window2->ui->ListenBtn->setEnabled(true);
                window2->ui->textEdit->clear();
                window2->ui->answer_lb->clear();
                window2->ui->subject_lb->clear();
                window2->ui->label_13->clear();
                window2->ui->label_14->clear();
                window2->ui->label_15->clear();
                window2->ui->label_17->clear();
                window2->ui->label_18->clear();
                window2->ui->textEdit_2->clear();
                 window2->ui->textEdit_3->clear();
                window2->show();
            }
            else {
                QMessageBox::information(this,"登录认证","登录失败,验证码输入错误");
            }


        }
}



